package com.link.base.wechat.wxcard.service;

import com.link.base.base.member.model.GiftCardWx;
import com.link.base.wechat.wxcard.model.CardActive;
import com.link.base.wechat.wxcard.model.Page;
import com.link.base.wechat.wxcard.model.WxCardInfo;
import com.link.base.wechat.wxcard.model.WxUpdateMemberInfo;

import java.util.Map;

/**
 * 微信公众号卡券service
 *
 * @author lujiang
 * @date 2019/02/26 18:45
 */
public interface WxCardInfoService {

    /**
     * 创建,修改微信卡券
     *
     * @author 路江
     * @date 2019/02/26 19:45
     * @param wxAppId 微信公众号应用id
     * @param wxCardInfo 卡券信息
     * @param rowStatus NEW OR UPDATE
     * @return
     * @throws Exception
     */
    public Map<String,Object> upsertWxCard(String wxAppId, WxCardInfo wxCardInfo, String rowStatus) throws Exception;

    /**
     * 修改会员信息
     *
     * @author lujiang
     * @date 2019/02/26 19:45
     * @param wxAppId 微信公众号应用id
     * @param info 要修改的会员信息组成的对象
     * @return
     * @throws Exception
     */
    public int updateMember(String wxAppId, WxUpdateMemberInfo info) throws Exception;

    /**
     * 卡券激活
     *
     * @author lujiang
     * @date 2019/02/27 11:20
     * @param wxAppId 微信公众号应用id
     * @param cardActive 激活对象
     * @return
     * @throws Exception
     */
    public int activeCard(String wxAppId, CardActive cardActive) throws Exception;

    /**
     * 创建-礼品卡货架接口
     *
     * @author lujiang
     * @date 2019/03/01 19:20
     * @param wxAppId 微信公众号应用id
     * @param page
     * @param rowStatus
     * @return
     * @throws Exception
     */
    public Map<String,Object> upsertGiftCardPage(String wxAppId, Page page, String rowStatus) throws Exception;

    /**
     * 货架打通小程序
     *
     * @author lujiang
     * @date 2019-03-04 18：00
     * @param giftCardWx 货架小程序中间表
     * @param wxAppId  微信公众号应用id
     * @return
     * @throws Exception
     */
    public Map<String,Object> setGiftCardWxa(GiftCardWx giftCardWx, String wxAppId) throws Exception;

    /**
     * 卡券Code解码接口
     *
     * @author ouyangzhenqiang
     * @date 2019/03/12 17:15
     * @param wxAppId     微信公众号应用Id
     * @param encryptCode 加密code
     */
    String codeDecrypt(String wxAppId, String encryptCode) throws Exception;

    /**
     * 获取开卡组件参数
     *
     * @author KuangRuifeng
     * @date 2019年4月30日10:55
     * @param wxAppId     微信公众号应用Id
     * @param cardId      卡券id
     * @param outerStr    渠道
     * @return extraData
     * @throws Exception 异常
     */
    Map<String, String> getExtraData(String wxAppId,  String cardId, String outerStr) throws Exception;

}
